<?php
/**
 * ==========================================
 *   ディレクトリ（フォルダ）内の使用容量取得
 *  ==========================================
 */

//引数 $pathにはディレクトリ、またはファイルの絶対パスを指定。
if (!function_exists('getDirSize')) {
    function getDirSize($path) {
        $total_size = 0;

        //指定したのがファイルだった場合はサイズを返して終了。
        if (is_file($path)) {
            $iSize = filesize($path);
            return $iSize;
        }
        elseif (is_dir($path)) {
            $basename = basename($path);
            //カレントディレクトリと上位ディレクトリを指している場合はここで終了。
            if ($basename == '.' || $basename == '..') {
                return 0;
            }

            //ディレクトリ内のファイル一覧を入手。
            $aFile_list = scandir($path);

            foreach ($aFile_list as $file) {
                $sCurrentPath = $path .'/'. $file;
                //ディレクトリ内の各ファイルを引数にして、自分自身を呼び出す。再帰処理。
                $total_size += getDirSize($sCurrentPath);
            }

            return $total_size;

        }
        else {
            return 0;
        }
    }
}

?>